function showDate(input){

    var inputId = $(input).attr("id");
    var parent  = $(input).parent();
    var html    = "";

    html += "<select id='dia"+inputId+"' onchange=\"establecerFecha('"+inputId+"')\"></select> / ";
    html += "<select id='mes"+inputId+"' onchange=\"ponerDias('"+inputId+"')\"></select> / ";
    html += "<select id='ano"+inputId+"' onchange=\"ponerDias('"+inputId+"')\"></select>";
    html += "<input type='hidden' id='"+inputId+"' name='"+inputId+"' />";

    $(input).remove();

    $(parent).attr("align", "left");

    $(parent).html(html);

    ponerAnho(inputId);
    ponerMes(inputId);
    ponerDias(inputId);

    actualizarFecha(inputId);

    return document.getElementById(inputId);
}

function establecerFecha(id){
    
    if($("#dia"+id).val() == "0" || $("#mes"+id).val() == "0" || $("#ano"+id).val() == "0"){
        $("#"+id).val("");
        return false;
    }

    var dia = Number($("#dia"+id).val());
    if(dia < 10){
        dia = "0"+dia;
    }
    var mes = Number($("#mes"+id).val());
    if(mes < 10){
        mes = "0"+mes;
    }
    var ano = Number($("#ano"+id).val());

    $("#"+id).val(ano+"-"+mes+"-"+dia);
    $("#"+id).change();

    return true;
}

function actualizarFecha(id){
    
    if($("#"+id).length == 0){
        return false;
    }

    if($("#"+id).val() == ""){
        $("#dia"+id).val("0");
        $("#mes"+id).val("0");
        $("#ano"+id).val("0");
        return;
    }

    var ano = $("#"+id).val().substr(0, 4);
    var mes = $("#"+id).val().substr(5, 2);
    var dia = $("#"+id).val().substr(8, 2);

    $("#ano"+id).val(ano);
    $("#mes"+id).val(mes);

    cargarDias(id);

    $("#dia"+id).val(dia);
    return true;
}

function ponerAnho(id){
    var ano = document.getElementById("ano"+id);//tomamos el elemento anhoNac.
    fechaActual = new Date();//fecha actual
    anoActual = fechaActual.getFullYear();//año de la fecha actual
    //anhoActual+=1900;//debido a que nos arroja los años transcurridos entre 1900 (en este caso 109) le debemos sumar 1900 para que nos de 2009)
    var anosTotal = ano.options.length-1;//tomamos los años que hay en el select y los borramos en el for
    for(var i=anosTotal;i>=0;i--){
        anho.options[i]=null;
    }

    var nullOp = document.createElement("OPTION");
    nullOp.value = "0";
    nullOp.text = "-";
    ano.options[0] = nullOp;

    var i=1;//creamos esta variable para las posiciones en el select
    for(var a=anoActual;a>=anoActual-120;a--){
        op = document.createElement("OPTION");//pasamos a crear el option
        op.value = a;
        op.text = a;
        ano.options[i] = op;//en la posicion i creamos ese option
        i++;//aumentamos i
    }
}

function ponerMes(id){
    var mes = document.getElementById("mes"+id);//tomamos el elemento
    var nombreMes;

    var nullOp = document.createElement("OPTION");
    nullOp.value = "0";
    nullOp.text = "-";
    mes.options[0] = nullOp;

    for(var m=1;m<=12;m++){//aca escojemos el mes segun el ciclo
        op = document.createElement("OPTION");//creamos la opcion
        var aux=0;
        if(m>0 && m<10){//dado que el día trabaja con el mes en dos digitos entonces le agregamos un cero (0) al inicio si es menor que 10
            aux=m;
            nombreMes="0"+aux;
        }
        else{//si no pues no XD
            nombreMes=m;
        }
        op.value = m;
        op.text = nombreMes;
        mes.options[m] = op;
    }
}

function cargarDias(id){
    var ano = document.getElementById("ano"+id);//tomamos el elemento año
    var mes = document.getElementById("mes"+id);//el mes
    var dias = document.getElementById("dia"+id);//y el dia
    var diasTotal = dias.options.length-1;//tomamos cuantos elementos hay en el select
    var valorDia = Number(dias.value);
    for(var i=diasTotal;i>=0;i--){//y los borramos
        dias.options[i]=null;
    }
    
    var max = 0;
    if(mes.value=="1" || mes.value=="3" || mes.value=="5" || mes.value=="7" || mes.value=="8" || mes.value=="10" || mes.value=="12"){
        max = 30;
    }
    //si el mes es de 30 dias entonces solo le pongo 30 dias
    if(mes.value=="4" || mes.value=="6" || mes.value=="9" || mes.value=="11"){
        max = 29;
    }
    
    //pero si el mes es el desgraciado de febrero, (desgraciado por que tiene mas poquitos :S)
    if(mes.value=="2"){
        //si es bisiesto
        if((ano.value % 4 == 0) && ((ano.value % 100 != 0) || (ano.value % 400 == 0))){
            max = 28;
        }
        else{//o si no lo es
            max = 27;
        }
    }

    var nullOp = document.createElement("OPTION");
    nullOp.value = "0";
    nullOp.text = "-";
    dias.options[0] = nullOp;

    for(var o=1;o<=max+1;o++){
        op = document.createElement("OPTION");
        var numDia = o;
        if(numDia < 10){
            numDia = "0"+numDia;
        }
        op.value = numDia;
        op.text = numDia;
        dias.options[o] = op;
        //document.body.appendChild(dias);
    }

    if(valorDia != null && valorDia != 0){
        if(valorDia <= Number(dias.options[dias.options.length-1].value)){
            dias.value = valorDia;
        }else{
            dias.value = Number(dias.options[dias.options.length-1].value);
        }
    }
}

function ponerDias(id){
    cargarDias(id);
    establecerFecha(id);
}

function setFechaActual(id){
    var f = new Date();
    var a = f.getFullYear();
    var m = f.getMonth()+1;
    var d = f.getDate();

    if(m < 10){
        m = "0"+m;
    }
    if(d < 10){
        d = "0"+d;
    }

    var date = d+"/"+m+"/"+a;

    $("#"+id).val(date);
    //actualizarFecha(id);
    $("#"+id).datepicker("setDate", date);
    $("#"+id).change();
}

function formatDate(systemDate){
    systemDate       = new String(systemDate);
    var formatedDate = new String();

    var year   = systemDate.substr(0, 4);
    var month  = systemDate.substr(5, 2);
    var day    = systemDate.substr(8, 2);

    formatedDate =  day + "/" + month + "/" + year;

    if (systemDate.length > 10){
        var hour   = systemDate.substr(11, 2);
        var min    = systemDate.substr(14, 2);
        var sec    = systemDate.substr(17, 2);

        //formatedDate += " "+hour+":"+min+":"+ sec;
    }

    return formatedDate;

}

function unformatDate(userDate){
    userDate       = new String(userDate);
    var formatedDate = new String();

    var day   = userDate.substr(0, 2);
    var month = userDate.substr(3, 2);
    var year  = userDate.substr(6, 4);

    formatedDate =  year+"-"+month+"-"+day;

    return formatedDate;
}

function getDatePickerOptions(){
    return {
            changeMonth: true,
            changeYear: true,
            dateFormat: 'dd/mm/yy',
            yearRange: 'c-120:c+10',
            dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles',
                       'Jueves', 'Viernes', 'Sábado'],
            dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
            dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab'],
            monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo',
                         'Junio', 'Julio', 'Agosto', 'Septiembre',
                         'Octubre', 'Noviembre', 'Diciembre'],
            monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May',
                              'Jun', 'Jul', 'Ago', 'Sep',
                              'Oct', 'Nov', 'Dic']
    };
}